home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib04.dsk
/
APPLE FINANCIER - PART I.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
4KB
|
88 lines
200 REM MENU
201 ONERR GOTO 500
202 HOME : VTAB 2: HTAB 12: INVERSE : PRINT " SELECT ONE OF THE FOLLOWING ": NORMAL : GOSUB 400
280 PRINT TAB( 14)"DIRECT REDUCTION LOAN <8>"
290 PRINT TAB( 14);"AMORTIZATION SCHEDULE <9>"
292 GOSUB 400: PRINT TAB( 24);"<RETURN> TO QUIT"
293 PRINT : PRINT : PRINT TAB( 30);"WHICH ";: POKE -16368,0: GET ANS$: PRINT ANS$
295 ANS = VAL(ANS$): IF ANS = 0 THEN END
296 ON ANS GOTO 1000,2000,3000,4000,5000,6000,7000,8000,9000
298 :
300 REM PRINT USING
302 P$ = STR$( INT((P +.005) *100))
304 IF LEN(P$) <3 THEN P$ = LEFT$("000",(3 - LEN(P$))) +P$
305 PP$ = LEFT$(P$,( LEN(P$) -2))
306 IF DP = 0 THEN P$ = PP$: GOTO 308
307 P$ = PP$ +"." + RIGHT$(P$,DP)
308 P$ = RIGHT$(" " +P$,PL)
310 RETURN
312 :
400 FOR DOT = 0 TO 39: PRINT ".";: NEXT DOT: RETURN
402 :
500 REM ERROR HANDLING ROUTINE
502 HOME : VTAB 5: INVERSE : PRINT "CHECK APPLESOFT MANUAL PG 136 FOR ERR": NORMAL
504 PRINT : PRINT "ERROR IS NUMBER "; PEEK(222): PRINT "LOCATED IN LINE "; PEEK(218) + PEEK(219) *256: POKE 34,0: END
505 :
8000 REM DIRECT REDUCTION LOAN
8002 :
8004 REM PGM INITIALIZATION
8006 CLEAR :DP = 2
8007 :
8100 REM MENU / INPUT SECTION
8102 HOME : VTAB 5
8104 PRINT "1. MAX BORROW AMOUNT"; TAB( 25);: IF FLAG THEN PRINT A(1): GOTO 8108
8106 INPUT A(1)
8108 PRINT "2. CHANGE IN AMOUNT"; TAB( 25);: IF FLAG THEN PRINT A(2): GOTO 8112
8110 INPUT A(2)
8112 PRINT "3. MAX INTEREST RATE"; TAB( 25);: IF FLAG THEN PRINT A(3): GOTO 8116
8114 INPUT A(3)
8116 PRINT "4. CHANGE IN INT RATE"; TAB( 25);: IF FLAG THEN PRINT A(4): GOTO 8120
8118 INPUT A(4)
8120 PRINT "5. LOAN TERM (MONTHS)"; TAB( 25);: IF FLAG THEN PRINT A(5): GOTO 8124
8122 INPUT A(5):FLAG = 1
8124 PRINT : INVERSE : PRINT "TYPE 'END' TO RETURN TO MENU ": NORMAL : VTAB 18: INPUT "ANY CHANGES? ";Y$
8126 IF LEFT$(Y$,1) = "N" THEN 8146
8128 IF Y$ = "END" THEN 200
8130 INPUT "WHICH ONE? ";W: PRINT "CHANGE PART ";W;" TO ";: INPUT A(W): GOTO 8102
8132 :
8134 REM PAYMENT CALCULATION
8136 I = J/1200
8138 PMT = (K *I)/(1 -(1 +I) ^( -A(5)))
8140 RETURN
8142 :
8144 REM OUTPUT HEADING SECTION
8146 HOME : HTAB 13: INVERSE : PRINT " TERM: ";A(5);" MONTHS ": NORMAL
8148 VTAB 2: PRINT "PRCNT";
8150 FOR K = A(1) -4 *A(2) TO A(1) STEP A(2):P$ = STR$( INT(K)):PL = 7: GOSUB 308: PRINT P$;: NEXT K
8152 GOSUB 400
8154 :
8156 REM MAIN PROGRAM
8158 J = A(3)
8160 P = J:PL = 5: GOSUB 302: PRINT P$;
8162 FOR K = A(1) -4 *A(2) TO A(1) STEP A(2)
8164 GOSUB 8136
8166 P = PMT:PL = 7: GOSUB 302: PRINT P$;
8168 NEXT K
8170 J = J -A(4)
8172 IF PEEK(37) <22 AND J >0 THEN 8160
8174 VTAB 24: INVERSE : PRINT " ANY KEY FOR MENU ";: NORMAL
8176 CALL -756
8178 GOTO 8102
8180 :
9000 REM AMORTIZATION SCHEDULE
9001 HOME : VTAB 5: INPUT "YEARLY INTEREST RATE % ";I:I = I/1200: INPUT "MONTHLY PAYMENT ";PMT: INPUT "INITIAL LOAN AMOUNT ";PV
9002 HOME :DP = 2
9003 PRINT TAB( 5);"PAID TO"; TAB( 15);"PAID"; TAB( 22);"REMAIN"; TAB( 33);"TOTAL"
9004 PRINT "NO"; TAB( 5);"PRINCIP"; TAB( 14);"TO INT"; TAB( 22);"BALANCE"; TAB( 32);"INTEREST": FOR DOT = 0 TO 39: PRINT ".";: NEXT DOT: POKE 34,3
9005 OB = PV:K = 1
9006 A = (1 +I) ^( -K)
9007 NB = (((A -1)/I) *PMT +PV)/A
9008 IF NB < = 0 THEN 9014
9009 PRIN = OB -NB:K$ = STR$(K):K$ = K$ +" ": PRINT LEFT$(K$,3);:P = PRIN:PL = 7: GOSUB 300: PRINT P$;
9010 IN = PMT -PRIN:P = IN:PL = 9: GOSUB 300: PRINT P$;:P = NB:PL = 10: GOSUB 300: PRINT P$;
9011 TIN = K *PMT -PV +NB:P = TIN: GOSUB 300: PRINT P$
9012 K = K +1:OB = NB
9013 IF PEEK(37) < >23 THEN 9006
9014 VTAB 24: INVERSE : PRINT " ESC TO EXIT OR ANY KEY TO CONTINUE ";: NORMAL
9015 POKE -16368,0: GET Z$: IF Z$ < > CHR$(27) THEN HOME : GOTO 9006
9016 POKE 34,0: GOTO 200